import logging


class ColoredFormatter(logging.Formatter):
    # 定义颜色代码
    COLORS = {
        'DEBUG': '\033[37m',  # 白色
        'INFO': '\033[37m',  # 白色
        'WARNING': '\033[33m',  # 黄色
        'ERROR': '\033[31m',  # 红色
        'CRITICAL': '\033[31m',  # 红色
    }
    RESET = '\033[0m'

    def format(self, record):
        log_fmt = self.COLORS.get(record.levelname, self.RESET) + self._fmt + self.RESET
        formatter = logging.Formatter(log_fmt)
        return formatter.format(record)


# 创建一个自定义格式化器
formatter = ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)d]')

# 创建日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# # 创建控制台处理器和文件处理器
console_handler = logging.StreamHandler()
# file_handler = logging.FileHandler("my_log.log")

# 将格式化器添加到处理器
console_handler.setFormatter(formatter)
# file_handler.setFormatter(formatter)

# 将处理器添加到日志记录器
logger.addHandler(console_handler)
# logger.addHandler(file_handler)

# 记录日志
if __name__=="__main__":
    logger.debug("这是调试信息")
    logger.info("这是一般信息")
    logger.warning("这是警告信息")
    logger.error("这是错误信息")
    logger.critical("这是严重错误信息")


# def debug(str):
#     logger.debug(str)
#
#
# def info(str):
#     logger.info(str)
#
#
# def warning(str):
#     logger.warning(str)
#
#
# def error(str):
#     logger.error(str)
#
#
# def critical(str):
#     logger.critical(str)
